//
//  NSString+MHEXtension.h
//  MH
//
//  Created by SY on 2018/9/25.
//  Copyright © 2018年 SY. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
@interface NSString (MHEXtension)
/**
 *  URLEncode
 */
- (NSString *)URLEncodedString;

/**
 *  URLDecode
 */
-(NSString *)URLDecodedString;

/** 删除所有的空格 */
- (NSString *)deleteSpace;

//文件
+(NSString *)fileMD5WithAsset:(NSData *)data;
/*
 *  MD5
 */
+ (NSString *)md5:(NSString *)string;

-(NSString *)md5;

/*
 *获取时间戳字符串
 */
+(NSString *)getTimesTemp;
/*
 *针对于金额的输入
 */
+(BOOL)isPriceNumber:(UITextField *)textField range:(NSRange)range replacementString:(NSString *)string;

//手机号码验证
+ (BOOL)validateMobile:(NSString*)mobile;

//验证身份证
+ (BOOL)verifyIDCardNumber:(NSString*)value; //验证身份证

//银行卡
+ (BOOL)validateBankCardNumber:(NSString*)bankCardNumber;
//根据算法判断是否是银行卡
+ (BOOL) checkCardNo:(NSString*) cardNo;

//用户名
+ (BOOL)validateUserName:(NSString*)name;

//密码
+ (BOOL)validatePassword:(NSString*)passWord;

/**
 *  验证中文汉字字母
 */
+ (BOOL)validateString:(NSString*)regStr;
/**
 *  以当前时间为图片名称
 *
 *  @return 图片名称.jpeg
 */
+ (NSString*)imageNameWithCurrentDate;
/**
 *  验证手机号码是否符合规则
 *
 *  @param mobileNum 电话号码
 *
 *  @return YES符合、NO不符合
 */
+ (BOOL)isMobileNumber:(NSString*)mobileNum;
/**
 *  检查密码是否是6-20位 允许特殊字符
 *
 *  @param _text 密码字符串
 *
 *  @return 是否符合符合YES、不符合NO
 */
+ (BOOL)CheckInput:(NSString*)_text;

/**
 *  判断字符串中是否只有中文、英文和数字和逗号，.:等
 */
+ (BOOL)judgeOnlyIncludeCENOrComma:(NSString *)str regexStr:(NSString *)regexStr;

/**
 *  判断字符串中是否只有中文、英文和数字
 */
+ (BOOL)judgeOnlyIncludeCEN:(NSString*)str;
/**
 *  判断字符串中是否只有中文
 */
+ (BOOL)isChinese:(NSString*)str;
/**
 *  判断是否只有英文字母和数字
 *
 *
 *  @return yes or no
 */
+ (BOOL)isEnglishWordOrNumber:(NSString*)str;
/**
 *  只有数字
 *
 *
 *  @return yes or no
 */
+ (BOOL)isOnlyNumber:(NSString*)str;
/*
 *  判断用户输入的密码是否符合规范，符合规范的密码要求：
 1. 长度大于8位 16位
 2. 密码中必须同时包含数字和字母
 */
+(BOOL)judgePassWordLegal:(NSString *)pass;
/*!
 *  判断输入字符串时候有系统自带表情
 */
+ (BOOL)stringContainsEmoji:(NSString*)string;
/*!
 *  统一社会信用代码的校验
 */
+ (BOOL)isSocialCredit18Number:(NSString *)socialCreditNum;
/*!
 *  判断是URL
 */
+ (BOOL)isUrlAddress:(NSString*)string;
/**
 *  时间戳转格式化的时间字符串
 */
- (NSString*)timestampToTimeStringWithFormatString:(NSString*)formatString;
/**
 *  计算文本占用的最大空间
 */
- (CGSize)sizeWithMaxSize:(CGSize)maxSize andFont:(UIFont *)font;
/**
 *  在密文中抽取正确的密文和密钥
 */
- (NSArray *)takeRightCiphertextAndKey;
/*
 判断是否邮箱地址
 */
+(BOOL)isEmail:(NSString *)email;
//全为空格
+ (BOOL)isEmptyStr:(NSString *)str;
//是否浮点
+(BOOL)isPureFloat:(NSString*)string;
//身份证号码性别判断 校验结果：0未知，1男，2女
+ (NSInteger)genderOfIDNumber:(NSString *)IDNumber;
/** 增:
 为链接增加参数和值;
 @param parameters 要增加的参数和值 eg: @{@"version" : @"1.1.0"}
 @return 增加参数后生成一个新的URL String;
 */
- (NSString *)addParameters:(NSDictionary *)parameters;

/** 删:
 删除参数为key的键值对;
 @param key 要删除的参数对的键;
 @return 删除的参数后生成一个新的URL String;
 */
- (NSString *)deleteParameterOfKey:(NSString *)key;

/** 改:
 修改参数中的值
 @param key 要修改的值对应的键
 @param toValue 要求改成的值
 @return 修改值后生成一个新的URL String;
 */
- (NSString *)modifyParameterOfKey:(NSString *)key toValue:(NSString *)toValue;

/** 查:
 获取URL中的所有参数键值对
 @返回值为字典, 字典中key为参数, value为参数值;
 */
- (NSDictionary *)parseURLParameters;

//汉字转化成字母
- (NSString *)convertChinese;

//多音字单独处理
- (NSString *)complexChinese;

//特殊符号,返回#
- (NSString *)identifySpecialWord;

//去掉前后空格
- (NSString *)deleteSpaceCharacter;
//字符串 json 转 数组
-(NSArray *)jsonWithArray;
//获取一个替换的https路径  转换为  路由路径
-(NSString *)replaceScheme:(NSString *)scheme path:(NSString *)replacePath;
//设置  路由路径
+(NSString *)getRouteScheme:(NSString *)scheme path:(NSString *)path;
//签名
+(NSString *)stringWithSign:(NSDictionary *)dic signKey:(NSString *)signKey;
// 根据拼音的字母排序
+ (NSString *)ascendingArr:(NSArray *)array;
@end
